package com.gjzhao.fmmall.exception;

import com.gjzhao.fmmall.vo.RespResultVO;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Description: 全局异常处理类 处理自定义异常 ApiException
 * 注解说明：
 *  - @ControllerAdvice 该注解类似于@Component注解，用于增强
 *  - @ExceptionHandler：用来修饰全局异常处理的方法，可以指定异常的类型
 *
 * @Author: gjzhao
 * @Date Created in 2022-01-24 1:33 下午
 */
@ControllerAdvice //该注解类似于@Compoent注解，@Controller注解用于处理请求，@ControllerAdvice用于增强，处理异常
public class GlobalExceptionHandler{

    /**
     * 作用：捕获自定义异常进行处理
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = ApiException.class)
    public RespResultVO handle(ApiException e) {

        if (e.getErrorCode() != null) {
            // 有自定义错误码值，返回自定义错误码值
            return RespResultVO.failed(e.getErrorCode());
        }
        //没有错误码值，返回默认错误码值
        return RespResultVO.failed(e.getMessage());
    }
}
